#pragma once

// Enum Pointer
enum class Pointer {
  P_Normal,
  P_Resize,
};

struct Color {
  unsigned char red;
  unsigned char green;
  unsigned char blue;
  unsigned char x;
};

// TODO: common color define

struct Font {
  int ascent;
  int descent;
  int height;
};

struct Rect {
  int x, y;
  int w, h;
};

struct Event {
  enum class Event_Type {
    E_Resize,
    E_Key,
    E_MouseDown,
    E_MouseUp,
    E_MouseSelect,
  } e_ty; // event type
  // TODO: union what the fuck

};

enum class Key_Code {
  K_Esc = 0x1b,
  // TODO:

};

struct Gui {
  int hmargin, vmargin;
  int border;
  Rect actionr;

  // TODO: func ptr define
};